<?php
/**
 * 电力信息边缘代理请求扩展
 * @author kongkai<51085726@qq.com>
 * @date 2022/04/27
 */

namespace app\border_agent;

class PowerInformationBorderAgent
{
    // 调试模式
    private bool $debug = true;
    private string $serverUrl = 'http://119.3.155.131:80/edge/reportData/dataFerry';
    private string $cpeNo = 'JM001';


    private object $curl;

    /**
     * 初始化类
     */
    public function __construct()
    {
        $this->curl = new Curl();
    }

    /**
     * 调用接口
     */
    public function run($funCode, $data)
    {
        $data = [
            'funCode' => $funCode,
            'unixTime' => time(),
            'cpeNo' => $this->cpeNo,
            'data' => $data,
        ];

        $res = $this->curl->run($this->serverUrl, $data);
        $res = json_decode($res, true);

        if ($this->debug) {
            return [
                '接口地址' => $this->serverUrl,
                '调试状态' => empty($res['code']) ? '缺少code字段' : ($res['code'] == 200 ? '成功' : '失败'),
                '入参' => $data,
                '回参' => $res,
            ];
        }

        if (!empty($res['code']) && $res['code'] == 200) {
            return true;
        }

        return false;
    }

    /**
     * 预警信息采集
     */
    public function earlyWarnCollect($ruleNo = '', $type = '', $videoEqpNo = '',
                                     $illegal = '', $imgStream = '', $userFaceId = '')
    {
        $data = [
            // 预警信息来源  1：边缘算法；2：第三方系统
            'sourceType' => 2,
            // 预警规则编号
            'ruleNo' => !empty($ruleNo) ? $ruleNo : '',
            // 预警规则类型(比如：faceCount 计算员工数)
            'type' => !empty($type) ? $type : '',
            // 视频设备编号
            'videoEqpNo' => !empty($videoEqpNo) ? $videoEqpNo : '',
            // 是否违章 0:否, 1:是
            'illegal' => !empty($illegal) ? $illegal : '',
            // 预警图片流对象
            'imgStream' => !empty($imgStream) ? $imgStream : '',
            // 违章时间
            'illegalTime' => date('Y-m-d H:i:s'),
            // 人脸比对身份证号
            'userFaceId' => !empty($userFaceId) ? $userFaceId : '',
        ];

        return $this->run(1006, $data);

    }

    /**
     * 环境信息采集
     */
    public function environmentCollect($temperature = '', $humidity = '', $windSpeed = '',
                                       $windScale = '', $pm10 = '', $tsp = '', $gas = '')
    {
        $data = [
            'temperature' => [
                [
                    // 温度
                    'value' => !empty($temperature) ? $temperature : 0,
                    'time' => date('Y-m-d H:i:s'),
                ]
            ],
            'humidity' => [
                [
                    // 湿度
                    'value' => !empty($humidity) ? $humidity : 0,
                    'time' => date('Y-m-d H:i:s'),
                ]
            ],
            'windSpeed' => [
                [
                    // 风速
                    'value' => !empty($windSpeed) ? $windSpeed : 0,
                    'time' => date('Y-m-d H:i:s'),
                ]
            ],
            'windScale' => [
                [
                    // 风力等级
                    'value' => !empty($windScale) ? $windScale : 0,
                    'time' => date('Y-m-d H:i:s'),
                ]
            ],
            'pm10' => [
                [
                    // pm10浓度
                    'value' => !empty($pm10) ? $pm10 : 0,
                    'time' => date('Y-m-d H:i:s'),
                ]
            ],
            'tsp' => [
                [
                    // 总悬浮颗粒
                    'value' => !empty($tsp) ? $tsp : 0,
                    'time' => date('Y-m-d H:i:s'),
                ]
            ],
            'gas' => [
                [
                    // 有害气体
                    'value' => !empty($gas) ? $gas : 0,
                    'time' => date('Y-m-d H:i:s'),
                ]
            ],
        ];

        return $this->run(1008, $data);
    }

    /**
     * 人员信息采集
     */
    public function personnelCollect($status = '', $userId = '', $userRole = '',
                                     $userType = '', $userContact = '', $userNation = '',
                                     $imgStream = '', $userGender = '', $userDeptName = '',
                                     $JobTicketName = '', $trackImgStream = '')
    {
        $data = [
            // 人员是否在场
            'status' => !empty($status) ? $status : 0,
            // 身份证号
            'userId' => !empty($userId) ? $userId : '',
            // 人员类型 (省送：constructor，临时：temporary，分包：subcontractor，业主：owner，监理：supervisor)
            'userRole' => !empty($userRole) ? $userRole : 'owner',
            // 工种
            'userType' => !empty($userType) ? $userType : '',
            // 联系方式
            'userContact' => !empty($userContact) ? $userContact : '',
            // 民族
            'userNation' => !empty($userNation) ? $userNation : '汉',
            // 人员头像图片流对象
            'imgStream' => !empty($imgStream) ? $imgStream : '',
            // 性别
            'userGender' => !empty($userGender) ? $userGender : '未知',
            // 项目部名称
            'userDeptName' => !empty($userDeptName) ? $userDeptName : '建设分公司',
            // 作业票名称
            'JobTicketName' => !empty($JobTicketName) ? $JobTicketName : '作业票',
            // 人员轨迹图片流对象
            'trackImgStream' => !empty($trackImgStream) ? $trackImgStream : '',
        ];

        return $this->run(1118, $data);
    }
}